20. Course Recap

Course Recap

ND079 JPND C2 L05 A21 Course Recap V3

This course has covered a truly broad selection of topics, ranging from low-level technical details like multi-threading, to high-level concepts like software design principles.

  • First, we covered how to use functional programming in Java. You used lambdas and streams to write clearer, more modern Java code that transforms and analyzes collections of data. We also talked about how to design your own code and APIs to make effective use of Java's functional programming capabilities.

  • Next, we went over input, output, and files. You learned how to make Java read input and produce output, so your programs can communicate with other programs and with humans. You compared common data formats like JSON and XML, and practiced serializing Java objects to these formats.

  • We covered design patterns and the overarching design principles that can guide you when you are solving new problems with software. Recognizing these concepts will help you create flexible, easy-to-understand software in any programming language — not just Java.

  • We talked about some of the advanced methods to create dynamic Java code. These techniques include using custom annotations, using the reflection to inspect programs and implement interfaces at runtime, and how to customize the way Java loads class bytecode. These techniques are the underpinning of many popular enterprise libraries and frameworks for Java.

  • Finally, we covered the basics of concurrency and parallel programming, which will help you effectively scale your programs to process data in parallel, such as handling multiple user requests at the same time.

For the course project, you will combine all these concepts and techniques to build a multi-threaded web crawler.